package com.nbcio.cd.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.nbcio.cd.domain.CdUserStorage;

/**
 * 云网盘用户存储统计Service接口
 *
 * @author nbacheng
 * @date 2024-01-01
 */
public interface ICdUserStorageService extends IService<CdUserStorage> {

    /**
     * 获取用户存储统计
     *
     * @param userId 用户ID
     * @return 存储统计
     */
    CdUserStorage getUserStorage(Long userId);

    /**
     * 更新用户存储统计
     *
     * @param userId 用户ID
     * @param sizeChange 大小变化
     * @param fileCountChange 文件数量变化
     * @param folderCountChange 文件夹数量变化
     */
    void updateUserStorage(Long userId, Long sizeChange, Integer fileCountChange, Integer folderCountChange);

    /**
     * 初始化用户存储统计
     *
     * @param userId 用户ID
     */
    void initUserStorage(Long userId);

    /**
     * 同步用户存储统计（根据实际文件数据重新计算）
     *
     * @param userId 用户ID
     * @return 同步后的存储统计
     */
    CdUserStorage syncUserStorage(Long userId);

    /**
     * 管理员设置用户存储配额
     *
     * @param userId 用户ID
     * @param totalSize 总存储空间大小（字节）
     */
    void setUserStorageQuota(Long userId, Long totalSize);
}
